package at.fhooe.tuxgestures.keysimulator;

import at.fhooe.tuxgestures.cam.mapper.event.IStateChangeEventListener;

public interface IKeySimulator extends IStateChangeEventListener
{
	/**
	 * The states that the key simulator can be in.
	 * These states are keys that will be sent from the
	 * camera control class.
	 * </br></br>
	 * Program flow:</br>
	 * 1) The camera controller constantly tracks the camera</br>
	 * 2) If a user approaches {@link State#SHOW_TUTORIAL} is sent to the {@link IKeySimulator}</br>
	 * 3) Once the user makes a certain gesture (defined/explained in the tutorial)</br>
	 * 		{@link State#SHOW_GAME} is sent to the {@link IKeySimulator}</br>
	 * 		That will switch to the game and start the game.</br>
	 * 4) While the user is there the movement states are sent.</br>
	 * 5) Once the user leaves {@link State#IDLE} is sent to the {@link IKeySimulator} </br>
	 * 		That means that the game is pause by the game simulator and it </br>
	 * 		displays some nice picture or something (or the tutorial...)</br>
	 * </br></br>
	 * Note: In a simple version {@link State#IDLE} and {@link State#SHOW_TUTORIAL} do the same.
	 * 
	 * @author Daniel Karzel
	 *
	 */
	public enum State
	{
		IDLE,
		SHOW_TUTORIAL,
		SHOW_GAME,
		PAUSE_GAME,
		MOVEMENT_RIGHT,
		MOVEMENT_LEFT,
		MOVEMENT_FORWARD,
		MOVEMENT_BACKWARD
	}

	
}
